// 蜂窝蜜造平台生成代码，如手工更改，请添加到 .beeignore 忽略生成

package com.fowo.api.model.funds.pay.order;

import com.fowo.api.common.annotaion.DataObjectType;
import com.fowo.api.common.meta.MetaDataObject;
import com.fowo.api.common.meta.MetaDataObjects;
import com.fowo.api.common.model.PageSearch;
import com.fowo.api.common.mybatis.helper.PageSearchHelper;
import com.fowo.api.common.util.ListUtils;
import com.fowo.api.entity.FundsPayOrder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

@DataObjectType(FundsPayOrder.class)
@Setter
@Getter
public class FundsPayOrderSearchParamPo extends PageSearch {

  private static MetaDataObject metaDataObject;

  @Override
  public void applySqlSegments() {
    if (metaDataObject == null) {
      metaDataObject =
        ListUtils.find(
          MetaDataObjects.getObjects(),
          o -> "FundsPayOrder".equals(o.getName())
        );
    }
    PageSearchHelper.fillSqlSegments(this, metaDataObject);
  }

  @Override
  public void initFinal() {
    super.initFinal();
    applySqlSegments();
  }

  /**
   * 获取关联字段的查询表别名信息
   */
  @Override
  public Map<String, String> getJoinFieldTableAliasMap() {
    Map<String, String> map = new HashMap<>();
    map.put("applicant", "su");
    map.put("paymentUser", "su2");
    return map;
  }

  @Override
  public Map<String, OptionalJoinField> getOptionalJoinFields() {
    Map<String, OptionalJoinField> map = new HashMap<>();

    return map;
  }

  /**
   * 指定使用特定的视图过滤条件
   * <p>
   * 有效值包括：FundsPayOrder/AllType, FundsPayOrder/Approval, FundsPayOrder/Obligation, FundsPayOrder/Completed, FundsPayOrder/Reject, FundsPayOrder/Cancellation
   * </p>
   */
  private String byViewName;

  /**
   * 编号
   */
  private Long id;

  /**
   * 最小编号
   */
  private Long idMin;

  /**
   * 最大编号
   */
  private Long idMax;

  /**
   * 编号 比较(eq)
   */
  private Long idEq;
  /**
   * 编号 比较(neq)
   */
  private Long idNeq;
  /**
   * 编号 比较(gt)
   */
  private Long idGt;
  /**
   * 编号 比较(gte)
   */
  private Long idGte;
  /**
   * 编号 比较(lt)
   */
  private Long idLt;
  /**
   * 编号 比较(lte)
   */
  private Long idLte;
  /**
   * 编号 比较(contains)
   */
  private Long idContains;
  /**
   * 编号 比较(notcontains)
   */
  private Long idNotcontains;
  /**
   * 编号 比较(startswith)
   */
  private Long idStartswith;
  /**
   * 编号 比较(endswith)
   */
  private Long idEndswith;
  /**
   * 编号 比较(isnull)
   */
  private Boolean idIsnull;
  /**
   * 编号 比较(isnotnull)
   */
  private Boolean idIsnotnull;

  /**
   * 请款单号(模糊搜索)
   */
  private String orderId;

  /**
   * 请款单号 比较(eq)
   */
  private String orderIdEq;
  /**
   * 请款单号 比较(neq)
   */
  private String orderIdNeq;
  /**
   * 请款单号 比较(gt)
   */
  private String orderIdGt;
  /**
   * 请款单号 比较(gte)
   */
  private String orderIdGte;
  /**
   * 请款单号 比较(lt)
   */
  private String orderIdLt;
  /**
   * 请款单号 比较(lte)
   */
  private String orderIdLte;
  /**
   * 请款单号 比较(contains)
   */
  private String orderIdContains;
  /**
   * 请款单号 比较(notcontains)
   */
  private String orderIdNotcontains;
  /**
   * 请款单号 比较(startswith)
   */
  private String orderIdStartswith;
  /**
   * 请款单号 比较(endswith)
   */
  private String orderIdEndswith;
  /**
   * 请款单号 比较(isnull)
   */
  private Boolean orderIdIsnull;
  /**
   * 请款单号 比较(isnotnull)
   */
  private Boolean orderIdIsnotnull;

  /**
   * 请款单号(精确搜索)
   */
  private List<String> orderIdInList;

  /**
   * 最早创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeStart;

  /**
   * 最晚创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeEnd;

  /**
   * 创建时间 比较(eq)
   */
  private Date createTimeEq;
  /**
   * 创建时间 比较(neq)
   */
  private Date createTimeNeq;
  /**
   * 创建时间 比较(gt)
   */
  private Date createTimeGt;
  /**
   * 创建时间 比较(gte)
   */
  private Date createTimeGte;
  /**
   * 创建时间 比较(lt)
   */
  private Date createTimeLt;
  /**
   * 创建时间 比较(lte)
   */
  private Date createTimeLte;
  /**
   * 创建时间 比较(contains)
   */
  private Date createTimeContains;
  /**
   * 创建时间 比较(notcontains)
   */
  private Date createTimeNotcontains;
  /**
   * 创建时间 比较(startswith)
   */
  private Date createTimeStartswith;
  /**
   * 创建时间 比较(endswith)
   */
  private Date createTimeEndswith;
  /**
   * 创建时间 比较(isnull)
   */
  private Boolean createTimeIsnull;
  /**
   * 创建时间 比较(isnotnull)
   */
  private Boolean createTimeIsnotnull;

  /**
   * 创建人
   */
  private Long createUser;

  /**
   * 最小创建人
   */
  private Long createUserMin;

  /**
   * 最大创建人
   */
  private Long createUserMax;

  /**
   * 创建人 比较(eq)
   */
  private Long createUserEq;
  /**
   * 创建人 比较(neq)
   */
  private Long createUserNeq;
  /**
   * 创建人 比较(gt)
   */
  private Long createUserGt;
  /**
   * 创建人 比较(gte)
   */
  private Long createUserGte;
  /**
   * 创建人 比较(lt)
   */
  private Long createUserLt;
  /**
   * 创建人 比较(lte)
   */
  private Long createUserLte;
  /**
   * 创建人 比较(contains)
   */
  private Long createUserContains;
  /**
   * 创建人 比较(notcontains)
   */
  private Long createUserNotcontains;
  /**
   * 创建人 比较(startswith)
   */
  private Long createUserStartswith;
  /**
   * 创建人 比较(endswith)
   */
  private Long createUserEndswith;
  /**
   * 创建人 比较(isnull)
   */
  private Boolean createUserIsnull;
  /**
   * 创建人 比较(isnotnull)
   */
  private Boolean createUserIsnotnull;

  /**
   * 最早更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeStart;

  /**
   * 最晚更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeEnd;

  /**
   * 更新时间 比较(eq)
   */
  private Date lastUpdateTimeEq;
  /**
   * 更新时间 比较(neq)
   */
  private Date lastUpdateTimeNeq;
  /**
   * 更新时间 比较(gt)
   */
  private Date lastUpdateTimeGt;
  /**
   * 更新时间 比较(gte)
   */
  private Date lastUpdateTimeGte;
  /**
   * 更新时间 比较(lt)
   */
  private Date lastUpdateTimeLt;
  /**
   * 更新时间 比较(lte)
   */
  private Date lastUpdateTimeLte;
  /**
   * 更新时间 比较(contains)
   */
  private Date lastUpdateTimeContains;
  /**
   * 更新时间 比较(notcontains)
   */
  private Date lastUpdateTimeNotcontains;
  /**
   * 更新时间 比较(startswith)
   */
  private Date lastUpdateTimeStartswith;
  /**
   * 更新时间 比较(endswith)
   */
  private Date lastUpdateTimeEndswith;
  /**
   * 更新时间 比较(isnull)
   */
  private Boolean lastUpdateTimeIsnull;
  /**
   * 更新时间 比较(isnotnull)
   */
  private Boolean lastUpdateTimeIsnotnull;

  /**
   * 更新人
   */
  private Long lastUpdateUser;

  /**
   * 最小更新人
   */
  private Long lastUpdateUserMin;

  /**
   * 最大更新人
   */
  private Long lastUpdateUserMax;

  /**
   * 更新人 比较(eq)
   */
  private Long lastUpdateUserEq;
  /**
   * 更新人 比较(neq)
   */
  private Long lastUpdateUserNeq;
  /**
   * 更新人 比较(gt)
   */
  private Long lastUpdateUserGt;
  /**
   * 更新人 比较(gte)
   */
  private Long lastUpdateUserGte;
  /**
   * 更新人 比较(lt)
   */
  private Long lastUpdateUserLt;
  /**
   * 更新人 比较(lte)
   */
  private Long lastUpdateUserLte;
  /**
   * 更新人 比较(contains)
   */
  private Long lastUpdateUserContains;
  /**
   * 更新人 比较(notcontains)
   */
  private Long lastUpdateUserNotcontains;
  /**
   * 更新人 比较(startswith)
   */
  private Long lastUpdateUserStartswith;
  /**
   * 更新人 比较(endswith)
   */
  private Long lastUpdateUserEndswith;
  /**
   * 更新人 比较(isnull)
   */
  private Boolean lastUpdateUserIsnull;
  /**
   * 更新人 比较(isnotnull)
   */
  private Boolean lastUpdateUserIsnotnull;

  /**
   * 关联单号(模糊搜索)
   */
  private String associatedOrder;

  /**
   * 关联单号 比较(eq)
   */
  private String associatedOrderEq;
  /**
   * 关联单号 比较(neq)
   */
  private String associatedOrderNeq;
  /**
   * 关联单号 比较(gt)
   */
  private String associatedOrderGt;
  /**
   * 关联单号 比较(gte)
   */
  private String associatedOrderGte;
  /**
   * 关联单号 比较(lt)
   */
  private String associatedOrderLt;
  /**
   * 关联单号 比较(lte)
   */
  private String associatedOrderLte;
  /**
   * 关联单号 比较(contains)
   */
  private String associatedOrderContains;
  /**
   * 关联单号 比较(notcontains)
   */
  private String associatedOrderNotcontains;
  /**
   * 关联单号 比较(startswith)
   */
  private String associatedOrderStartswith;
  /**
   * 关联单号 比较(endswith)
   */
  private String associatedOrderEndswith;
  /**
   * 关联单号 比较(isnull)
   */
  private Boolean associatedOrderIsnull;
  /**
   * 关联单号 比较(isnotnull)
   */
  private Boolean associatedOrderIsnotnull;

  /**
   * 关联单号(精确搜索)
   */
  private List<String> associatedOrderInList;

  /**
   * 应付费用类型
   */
  private String costType;

  /**
   * 应付费用类型 比较(eq)
   */
  private String costTypeEq;
  /**
   * 应付费用类型 比较(neq)
   */
  private String costTypeNeq;
  /**
   * 应付费用类型 比较(gt)
   */
  private String costTypeGt;
  /**
   * 应付费用类型 比较(gte)
   */
  private String costTypeGte;
  /**
   * 应付费用类型 比较(lt)
   */
  private String costTypeLt;
  /**
   * 应付费用类型 比较(lte)
   */
  private String costTypeLte;
  /**
   * 应付费用类型 比较(contains)
   */
  private String costTypeContains;
  /**
   * 应付费用类型 比较(notcontains)
   */
  private String costTypeNotcontains;
  /**
   * 应付费用类型 比较(startswith)
   */
  private String costTypeStartswith;
  /**
   * 应付费用类型 比较(endswith)
   */
  private String costTypeEndswith;
  /**
   * 应付费用类型 比较(isnull)
   */
  private Boolean costTypeIsnull;
  /**
   * 应付费用类型 比较(isnotnull)
   */
  private Boolean costTypeIsnotnull;

  /**
   * 应付费用类型(精确搜索)
   */
  private List<String> costTypeInList;

  /**
   * 最早预计付款日期
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date predictFkTimeStart;

  /**
   * 最晚预计付款日期
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date predictFkTimeEnd;

  /**
   * 预计付款日期 比较(eq)
   */
  private Date predictFkTimeEq;
  /**
   * 预计付款日期 比较(neq)
   */
  private Date predictFkTimeNeq;
  /**
   * 预计付款日期 比较(gt)
   */
  private Date predictFkTimeGt;
  /**
   * 预计付款日期 比较(gte)
   */
  private Date predictFkTimeGte;
  /**
   * 预计付款日期 比较(lt)
   */
  private Date predictFkTimeLt;
  /**
   * 预计付款日期 比较(lte)
   */
  private Date predictFkTimeLte;
  /**
   * 预计付款日期 比较(contains)
   */
  private Date predictFkTimeContains;
  /**
   * 预计付款日期 比较(notcontains)
   */
  private Date predictFkTimeNotcontains;
  /**
   * 预计付款日期 比较(startswith)
   */
  private Date predictFkTimeStartswith;
  /**
   * 预计付款日期 比较(endswith)
   */
  private Date predictFkTimeEndswith;
  /**
   * 预计付款日期 比较(isnull)
   */
  private Boolean predictFkTimeIsnull;
  /**
   * 预计付款日期 比较(isnotnull)
   */
  private Boolean predictFkTimeIsnotnull;

  /**
   * 申请人
   */
  private Long applicant;

  /**
   * 申请人 比较(eq)
   */
  private Long applicantEq;
  /**
   * 申请人 比较(neq)
   */
  private Long applicantNeq;
  /**
   * 申请人 比较(gt)
   */
  private Long applicantGt;
  /**
   * 申请人 比较(gte)
   */
  private Long applicantGte;
  /**
   * 申请人 比较(lt)
   */
  private Long applicantLt;
  /**
   * 申请人 比较(lte)
   */
  private Long applicantLte;
  /**
   * 申请人 比较(contains)
   */
  private Long applicantContains;
  /**
   * 申请人 比较(notcontains)
   */
  private Long applicantNotcontains;
  /**
   * 申请人 比较(startswith)
   */
  private Long applicantStartswith;
  /**
   * 申请人 比较(endswith)
   */
  private Long applicantEndswith;
  /**
   * 申请人 比较(isnull)
   */
  private Boolean applicantIsnull;
  /**
   * 申请人 比较(isnotnull)
   */
  private Boolean applicantIsnotnull;
  /**
   * 申请人的显示用户名 比较(eq)
   */
  private String applicantNameEq;
  /**
   * 申请人的显示用户名 比较(neq)
   */
  private String applicantNameNeq;
  /**
   * 申请人的显示用户名 比较(gt)
   */
  private String applicantNameGt;
  /**
   * 申请人的显示用户名 比较(gte)
   */
  private String applicantNameGte;
  /**
   * 申请人的显示用户名 比较(lt)
   */
  private String applicantNameLt;
  /**
   * 申请人的显示用户名 比较(lte)
   */
  private String applicantNameLte;
  /**
   * 申请人的显示用户名 比较(contains)
   */
  private String applicantNameContains;
  /**
   * 申请人的显示用户名 比较(notcontains)
   */
  private String applicantNameNotcontains;
  /**
   * 申请人的显示用户名 比较(startswith)
   */
  private String applicantNameStartswith;
  /**
   * 申请人的显示用户名 比较(endswith)
   */
  private String applicantNameEndswith;
  /**
   * 申请人的显示用户名 比较(isnull)
   */
  private Boolean applicantNameIsnull;
  /**
   * 申请人的显示用户名 比较(isnotnull)
   */
  private Boolean applicantNameIsnotnull;

  /**
   * 申请人(范围搜索)
   */
  private List<Long> applicantInList;

  /**
   * 最早申请时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date applyTimeStart;

  /**
   * 最晚申请时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date applyTimeEnd;

  /**
   * 申请时间 比较(eq)
   */
  private Date applyTimeEq;
  /**
   * 申请时间 比较(neq)
   */
  private Date applyTimeNeq;
  /**
   * 申请时间 比较(gt)
   */
  private Date applyTimeGt;
  /**
   * 申请时间 比较(gte)
   */
  private Date applyTimeGte;
  /**
   * 申请时间 比较(lt)
   */
  private Date applyTimeLt;
  /**
   * 申请时间 比较(lte)
   */
  private Date applyTimeLte;
  /**
   * 申请时间 比较(contains)
   */
  private Date applyTimeContains;
  /**
   * 申请时间 比较(notcontains)
   */
  private Date applyTimeNotcontains;
  /**
   * 申请时间 比较(startswith)
   */
  private Date applyTimeStartswith;
  /**
   * 申请时间 比较(endswith)
   */
  private Date applyTimeEndswith;
  /**
   * 申请时间 比较(isnull)
   */
  private Boolean applyTimeIsnull;
  /**
   * 申请时间 比较(isnotnull)
   */
  private Boolean applyTimeIsnotnull;

  /**
   * 最早实际付款日期
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date paymentDateStart;

  /**
   * 最晚实际付款日期
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date paymentDateEnd;

  /**
   * 实际付款日期 比较(eq)
   */
  private Date paymentDateEq;
  /**
   * 实际付款日期 比较(neq)
   */
  private Date paymentDateNeq;
  /**
   * 实际付款日期 比较(gt)
   */
  private Date paymentDateGt;
  /**
   * 实际付款日期 比较(gte)
   */
  private Date paymentDateGte;
  /**
   * 实际付款日期 比较(lt)
   */
  private Date paymentDateLt;
  /**
   * 实际付款日期 比较(lte)
   */
  private Date paymentDateLte;
  /**
   * 实际付款日期 比较(contains)
   */
  private Date paymentDateContains;
  /**
   * 实际付款日期 比较(notcontains)
   */
  private Date paymentDateNotcontains;
  /**
   * 实际付款日期 比较(startswith)
   */
  private Date paymentDateStartswith;
  /**
   * 实际付款日期 比较(endswith)
   */
  private Date paymentDateEndswith;
  /**
   * 实际付款日期 比较(isnull)
   */
  private Boolean paymentDateIsnull;
  /**
   * 实际付款日期 比较(isnotnull)
   */
  private Boolean paymentDateIsnotnull;

  /**
   * 付款人
   */
  private Long paymentUser;

  /**
   * 付款人 比较(eq)
   */
  private Long paymentUserEq;
  /**
   * 付款人 比较(neq)
   */
  private Long paymentUserNeq;
  /**
   * 付款人 比较(gt)
   */
  private Long paymentUserGt;
  /**
   * 付款人 比较(gte)
   */
  private Long paymentUserGte;
  /**
   * 付款人 比较(lt)
   */
  private Long paymentUserLt;
  /**
   * 付款人 比较(lte)
   */
  private Long paymentUserLte;
  /**
   * 付款人 比较(contains)
   */
  private Long paymentUserContains;
  /**
   * 付款人 比较(notcontains)
   */
  private Long paymentUserNotcontains;
  /**
   * 付款人 比较(startswith)
   */
  private Long paymentUserStartswith;
  /**
   * 付款人 比较(endswith)
   */
  private Long paymentUserEndswith;
  /**
   * 付款人 比较(isnull)
   */
  private Boolean paymentUserIsnull;
  /**
   * 付款人 比较(isnotnull)
   */
  private Boolean paymentUserIsnotnull;
  /**
   * 付款人的显示用户名 比较(eq)
   */
  private String paymentUserNameEq;
  /**
   * 付款人的显示用户名 比较(neq)
   */
  private String paymentUserNameNeq;
  /**
   * 付款人的显示用户名 比较(gt)
   */
  private String paymentUserNameGt;
  /**
   * 付款人的显示用户名 比较(gte)
   */
  private String paymentUserNameGte;
  /**
   * 付款人的显示用户名 比较(lt)
   */
  private String paymentUserNameLt;
  /**
   * 付款人的显示用户名 比较(lte)
   */
  private String paymentUserNameLte;
  /**
   * 付款人的显示用户名 比较(contains)
   */
  private String paymentUserNameContains;
  /**
   * 付款人的显示用户名 比较(notcontains)
   */
  private String paymentUserNameNotcontains;
  /**
   * 付款人的显示用户名 比较(startswith)
   */
  private String paymentUserNameStartswith;
  /**
   * 付款人的显示用户名 比较(endswith)
   */
  private String paymentUserNameEndswith;
  /**
   * 付款人的显示用户名 比较(isnull)
   */
  private Boolean paymentUserNameIsnull;
  /**
   * 付款人的显示用户名 比较(isnotnull)
   */
  private Boolean paymentUserNameIsnotnull;

  /**
   * 付款人(范围搜索)
   */
  private List<Long> paymentUserInList;

  /**
   * 表单名称
   */
  private String formName;

  /**
   * 工作流状态
   */
  private Integer wfStatus;
}
